package me.ivps.android.weibo.support.settinghelper;

import android.content.Context;
import android.content.SharedPreferences;
import android.preference.PreferenceManager;

/**
 * 设置/获取 Preference 工具类
 * 
 * User: qii Date: 12-11-28
 */
class SettingHelper {
    
    private static SharedPreferences.Editor editor = null;
    
    private static SharedPreferences sharedPreferences = null;
    
    private SettingHelper() {
    }
    
    /**
     * 返回 默认的 SharedPreference
     * 
     * @param context
     * @return
     */
    private static SharedPreferences getSharedPreferencesObject(Context context) {
        if (sharedPreferences == null) {
            sharedPreferences = PreferenceManager
                    .getDefaultSharedPreferences(context);
        }
        return sharedPreferences;
    }
    
    /**
     * 返回 PreferenceEditor
     * 
     * @param context
     * @return
     */
    private static SharedPreferences.Editor getEditorObject(Context context) {
        if (editor == null) {
            editor = PreferenceManager.getDefaultSharedPreferences(context)
                    .edit();
        }
        return editor;
    }
    
    /**
     * 返回指定 SharedPreferences 的指定 value
     * 
     * @param context
     * @param key
     * @param defaultValue
     * @return
     */
    public static int getSharedPreferences(Context context, String key,
            int defaultValue) {
        return getSharedPreferencesObject(context).getInt(key, defaultValue);
    }
    
    /**
     * 返回指定 SharedPreferences 的指定 value
     * 
     * @param context
     * @param key
     * @param defaultValue
     * @return
     */
    public static long getSharedPreferences(Context context, String key,
            long defaultValue) {
        return getSharedPreferencesObject(context).getLong(key, defaultValue);
    }
    
    /**
     * 返回指定 SharedPreferences 的指定 value
     * 
     * @param context
     * @param key
     * @param defaultValue
     * @return
     */
    public static Boolean getSharedPreferences(Context context, String key,
            Boolean defaultValue) {
        return getSharedPreferencesObject(context)
                .getBoolean(key, defaultValue);
    }
    
    /**
     * 返回指定 SharedPreferences 的指定 value
     * 
     * @param context
     * @param key
     * @param defaultValue
     * @return
     */
    public static String getSharedPreferences(Context context, String key,
            String defaultValue) {
        return getSharedPreferencesObject(context).getString(key, defaultValue);
    }
    
    /**
     * 设置默认 SharedPreference 的指定 key - value 值
     * 
     * @param context
     * @param key
     * @param value
     */
    public static void setEditor(Context context, String key, int value) {
        getEditorObject(context).putInt(key, value).commit();
    }
    
    /**
     * 设置默认 SharedPreference 的指定 key - value 值
     * 
     * @param context
     * @param key
     * @param value
     */
    public static void setEditor(Context context, String key, long value) {
        getEditorObject(context).putLong(key, value).commit();
    }
    
    /**
     * 设置默认 SharedPreference 的指定 key - value 值
     * 
     * @param context
     * @param key
     * @param value
     */
    public static void setEditor(Context context, String key, Boolean value) {
        getEditorObject(context).putBoolean(key, value).commit();
    }
    
    /**
     * 设置默认 SharedPreference 的指定 key - value 值
     * 
     * @param context
     * @param key
     * @param value
     */
    public static void setEditor(Context context, String key, String value) {
        getEditorObject(context).putString(key, value).commit();
    }
}
